home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / scope / 101-125 / scopedisk122 / popup / source / startup.a < prev    next >
Text File  |  1995-03-19  |  3KB  |  124 lines

  1.            INCLUDE      "exec/types.i"
  2.            INCLUDE      "libraries/dos.i"
  3.            INCLUDE      "libraries/dosextens.i"
  4.            INCLUDE      "exec/execbase.i"
  5.            INCLUDE      "exec/funcdef.i"
  6.            INCLUDE      "exec/exec_lib.i"
  7.            INCLUDE      "libraries/dos_lib.i"
  8.  
  9. AbsExecBase    EQU      4
  10. POPUPPRI       EQU      5
  11. POPUPSTACK     EQU      2000
  12. * Must use Kickstart 1.2 or higher
  13. LIBVERSION     EQU      33
  14.  
  15.            xref      _LinkerDB
  16.            xref      @InitPopUpMenu
  17.            xref      _PopUpTaskName
  18.  
  19.            section      Startup,code
  20.  
  21. Startup        MOVEM.L      D2-D4/A2-A4/A6,-(A7)
  22.            LEA      _LinkerDB,A4
  23.  
  24. * ------------ Open dos.
  25.            LEA      DosName(PC),A1
  26.            MOVEQ.L      #LIBVERSION,D0
  27.            MOVEA.L      AbsExecBase.W,A6
  28.            JSR      _LVOOpenLibrary(A6)
  29.            MOVE.L      D0,_DOSBase(A4)
  30.  
  31.            TST.L      D0
  32.            BEQ.W      NoDos
  33.  
  34. * ------------ Get pointer to our Process.
  35.            MOVEA.L      ThisTask(A6),A3
  36.  
  37. * ------------ Run from Workbench ?
  38.            TST.L      pr_CLI(A3)
  39.            BEQ.B      FromWorkbench
  40.  
  41. * ------------ Get address to this segment.
  42.            LEA      Startup-4(PC),A2
  43.  
  44. * ------------ Get address to PopUpMenu code segment.
  45.            MOVE.L      #@InitPopUpMenu-4,D3
  46.  
  47. * ------------ Convert to BCPL.
  48.            ASR.L      #2,D3
  49.  
  50. * ------------ Find current output window.
  51.            MOVE.L      #CurrWindow,D1
  52.            MOVE.L      #MODE_OLDFILE,D2
  53.            MOVEA.L      _DOSBase(A4),A6
  54.            JSR      _LVOOpen(A6)
  55.            MOVE.L      D0,_StdOut(A4)
  56.  
  57.            TST.L      D0
  58.            BEQ.B      NoStdOut
  59.  
  60. * ------------ Save start of segments.
  61.            MOVE.L      (A2),_PopUpSeg(A4)
  62.  
  63. * ------------ Remove this segment.
  64.            CLR.L      (A2)
  65.  
  66. * ------------ Create PopUpMenu process.
  67.            MOVE.L      _PopUpTaskName,D1
  68.            MOVEQ      #POPUPPRI,D2
  69.            MOVE.L      #POPUPSTACK,D4
  70.            JSR      _LVOCreateProc(A6)
  71.            BRA.B      Done
  72.  
  73. * ------------ Wait for Workbench startup-message.
  74. FromWorkbench  LEA      pr_MsgPort(A3),A0
  75.            JSR      _LVOWaitPort(A6)
  76.            LEA      pr_MsgPort(A3),A0
  77.            JSR      _LVOGetMsg(A6)
  78.            MOVE.L      D0,D3
  79.  
  80. * ------------ Open window on Workbench screen.
  81.            MOVE.L      #WbWindow,D1
  82.            MOVE.L      #MODE_NEWFILE,D2
  83.            MOVEA.L      _DOSBase(A4),A6
  84.            JSR      _LVOOpen(A6)
  85.            MOVE.L      D0,_StdOut(A4)
  86.  
  87.            MOVEA.L      AbsExecBase.W,A6
  88.            TST.L      D0
  89.            BEQ.B      NoWbStdOut
  90.  
  91. * ------------ No need to unload segments (Workbench takes care of that).
  92.            CLR.L      _PopUpSeg(A4)
  93.  
  94. * ------------ Set task priority.
  95.            MOVEA.L      A3,A1
  96.            MOVEQ      #POPUPPRI,D0
  97.            JSR      _LVOSetTaskPri(A6)
  98.  
  99. * ------------ Start PopUpMenu-program.
  100.            JSR      @InitPopUpMenu
  101.  
  102. * ------------ Forbid so Workbench can't unload us before we are done.
  103. NoWbStdOut     JSR      _LVOForbid(A6)
  104.            MOVEA.L      D3,A1
  105.            JSR      _LVOReplyMsg(A6)
  106. Done
  107. NoStdOut
  108. NoDos           MOVEQ      #00,D0
  109.            MOVEM.L      (A7)+,D2-D4/A2-A4/A6
  110.            RTS
  111. * Put these data in our code-segment.
  112. CurrWindow     dc.b      '*',0
  113. DosName        dc.b      'dos.library',0
  114. WbWindow       dc.b      'CON:100/75/400/45/PopUpMenu',0
  115.  
  116.            section      __MERGED,bss
  117.  
  118.            xref      _DOSBase
  119.            xref      _StdOut
  120.            xref      _PopUpSeg
  121.  
  122.            END
  123.  
  124.